#include "model.h"

//cette librairie utilise la variable globale t_database* core

//LOAD_MAP : charge une carte : aeroports & chemins entre les aeroports
//retourne 0 si echoue dans l'ouverture de l'un des deux fichiers, 1 si succès.
//et affiche avec un g_print lequel de ces fichiers c'est
int load_map(char* nom_fic_aero,char* nom_fic_chem)
{
/* Initialisation des librairies */
 
  FILE *faero;
  FILE *fchem;
 
  char chaine_aero[1000];
  char chaine_trajet[1000];
  char *temp;
  int temp2 = 0;
  int nbaero = 0;
  int nbtrajet = 0;
  int i = 0;
  int avions_totals = 0;
 
  printf("Initializing simulation...\n");
  /* G��ation des param�res locaux d'un a�oport */
  //Ouvertures fichiers
  
  //fichier aeroports
  faero=fopen(nom_fic_aero,"r");
  if(!faero)
  {
  	g_print("load_map : %s doesn't exist. Aborting\n",nom_fic_aero);
  	return 0;
  }
  
  //fichier chemins
  fchem = fopen(nom_fic_chem,"r");
  if(!fchem)
  {
  	g_print("load_map : %s doesn't exist. Aborting\n",nom_fic_chem);
  	return 0;
  }

  //Parsage des fichiers
  //fichier aeroport
  fgets(chaine_aero,1000,faero);
  //recuperation du nombre d'aeroports
  temp=strtok(chaine_aero,";");
  nbaero=atoi(temp);
  AA
  core->nb_aeroports = nbaero;
  AA
  
 
  //allocation du tableau de structure
  core->aeroports=(t_aeroport**)malloc(nbaero*sizeof(t_aeroport));

  for(i=0;i<nbaero;i++){
        core->aeroports[i]=NULL;
  }    
  
  printf("Extracting airports...\n"); 
  for(i=0;i<nbaero;i++){
                  core->aeroports[i]=(t_aeroport*)malloc(sizeof(t_aeroport));
                  
                  temp=strtok(NULL,";");
                  core->aeroports[i]->nom_aero=temp;
                  //printf("nom de l'aero : %s\n",core->aeroports[i]->nom_aero);
                  
                  temp=strtok(NULL,";");
                  temp2=atoi(temp);
                  core->aeroports[i]->numero=temp2;
                  //printf("numero %d\n",core->aeroports[i]->numero);
                  
                  
                  temp=strtok(NULL,";");
                  temp2=atoi(temp);
                  core->aeroports[i]->piste=temp2;
                  //printf("piste %d\n",core->aeroports[i]->piste);
                  
                  
                  temp=strtok(NULL,";");
                  temp2=atoi(temp);
                  core->aeroports[i]->place=temp2;
                  avions_totals += core->aeroports[i]->place;
                  //printf("place %d\n",core->aeroports[i]->place);
                  
                  
                  temp=strtok(NULL,";");
                  temp2=atoi(temp);
                  core->aeroports[i]->attente=temp2;
                  //printf("attente %d\n",core->aeroports[i]->attente);
                  
                  
                  temp=strtok(NULL,";");
                  temp2=atoi(temp);
                  core->aeroports[i]->acces=temp2;
                  //printf("acces %d\n",core->aeroports[i]->acces);
                  
                  temp=strtok(NULL,";");
                  temp2=atoi(temp);
                  core->aeroports[i]->duree=temp2;
                  //printf("duree %d\n",core->aeroports[i]->duree);
                 
                  
                  temp=strtok(NULL,";");
                  temp2=atoi(temp);
                  core->aeroports[i]->collision=temp2;
                  //printf("collision %d\n",core->aeroports[i]->collision);
                 
                  
                  temp=strtok(NULL,":");
                  temp2=atoi(temp);
                  core->aeroports[i]->boucle=temp2;
                  //printf("boucle %d\n",core->aeroports[i]->boucle);
                  
                  core->aeroports[i]->x = 0;
                  core->aeroports[i]->y = 0;
                  
                  //printf("fin de la configuration de l'aeroport %s\n\n",core->aeroports[i]->nom_aero);
  }
  fclose(faero);

  //Récupération des chemins

  //nombre de trajets
  fgets(chaine_trajet,1000,fchem);
  temp=strtok(chaine_trajet,";");
  nbtrajet=atoi(temp);
  core->nb_trajets = nbtrajet;
 
  core->trajets=(t_chemin**)malloc(nbtrajet*sizeof(t_chemin*));
 
  for(i=0;i<nbtrajet;i++){
                         core->trajets[i]=NULL;
  }
   
   printf("Extracting air lane...\n");
   for(i=0;i<nbtrajet;i++){
                          core->trajets[i]=(t_chemin*)malloc(sizeof(t_chemin));
                          
                           temp=strtok(NULL,";");
                           temp2=atoi(temp);
                           core->trajets[i]->villedepart=temp2;
                           //printf("num aero depart %d\n",core->trajets[i]->villedepart);
                           
                           temp=strtok(NULL,";");
                           temp2=atoi(temp);
                           core->trajets[i]->villearrivee=temp2;
                           //printf("num aero arrivee %d\n",core->trajets[i]->villearrivee);
                           
                           temp=strtok(NULL,":");
                           temp2=atoi(temp);
                           core->trajets[i]->distance=temp2;
                           //printf("duree du vol %d\n",core->trajets[i]->distance);
                           //printf("fin du %d trajet\n\n",i);
                           
                          
   }
   fclose(fchem);
   g_print("load_map : done loading : %s and %s\n",nom_fic_chem,nom_fic_aero);
   return 1;
}

